#include <iostream>
#include <fstream>
#include <vector>
#include "TH1F.h"
#include "TCanvas.h"

void draw_spectrum() {
    // 打开txt文件
    std::ifstream infile("./out/out.txt");
    
    if (!infile.is_open()) {
        std::cerr << "Error: cannot open file out.txt" << std::endl;
        return;
    }

    // 读取数据
    std::vector<double> energyDeposits;
    double edep;
    while (infile >> edep) {
        energyDeposits.push_back(edep);
    }
    infile.close();

    // 定义直方图
    int nBins = 1024;       // 道宽设置为1024，可以根据需要调整
    double minEnergy = 0.1; // 最小能量为0.01 MeV
    double maxEnergy = 3.0; // 假设最大能量为 3 MeV，根据实际情况调整

    TH1F *h1 = new TH1F("h1", "Energy Spectrum; Energy (MeV); Counts", nBins, minEnergy, maxEnergy);

    // 填充直方图
    for (size_t i = 0; i < energyDeposits.size(); ++i) {
        
        h1->Fill(energyDeposits[i]);
    }

    // 绘制直方图
    TCanvas *c1 = new TCanvas("c1", "Energy Spectrum", 800, 600);
    h1->Draw();
    c1->SaveAs("./out/spectrum.png");  // 可以保存为图片格式

    // 交互式显示图像（如果使用 ROOT 交互环境）
    c1->Update();
}
